import request from '@/config/axios'
import type { Dayjs } from 'dayjs'

/** 复检任务信息 */
export interface RecheckTask {
  id: number // 主键
  code?: string // 复检单号
  drawingNoId?: number // 图号id
  accountId?: number // 模具id
  assigneerId: number // 接收人Id
  assigneerIds: string // 复检人Ids
  assigneerNames: string // 复检人名字
  recheckId?: number // 复检类型id
  urgency: number // 紧急程度Id
  status: number // 任务状态
  nextRecheckTime: string | Dayjs // 计划复检日期
  realRecheckTime: string | Dayjs // 实际复检日期
  taskCreateTime: string | Dayjs // 任务下达时间
  taskReceiveTime: string | Dayjs // 任务接收时间
  jobStartTime: string | Dayjs // 作业开始时间
  taskStartTime: string | Dayjs // 任务开始时间
  taskEndTime: string | Dayjs // 任务结束时间
  taskExecutionDuration: number // 任务执行时长
  actualStartTime: string | Dayjs // 实际开始时间
  actualEndTime: string | Dayjs // 实际结束时间
  actualExecutionDuration: string // 实际持续时长
  isCompleted: number // 复检完整
  auditDescription: string // 审核说明
  description: string // 描述
}

export interface RecheckTaskModStatus {
  id: number // 主键
  status: number // 任务状态
  data?: string // 参数
}

// 复检任务 API
export const RecheckTaskApi = {
  // 查询复检任务分页
  getRecheckTaskPage: async (params: any) => {
    return await request.get({ url: `/mold/recheck-task/page`, params })
  },

  // 查询复检任务详情
  getRecheckTask: async (id: number) => {
    return await request.get({ url: `/mold/recheck-task/get?id=` + id })
  },

  // 新增复检任务
  createRecheckTask: async (data: RecheckTask) => {
    return await request.post({ url: `/mold/recheck-task/create`, data })
  },

  // 修改复检任务
  updateRecheckTask: async (data: RecheckTask) => {
    return await request.put({ url: `/mold/recheck-task/update`, data })
  },

  // 删除复检任务
  deleteRecheckTask: async (id: number) => {
    return await request.delete({ url: `/mold/recheck-task/delete?id=` + id })
  },

  /** 批量删除复检任务 */
  deleteRecheckTaskList: async (ids: number[]) => {
    return await request.delete({ url: `/mold/recheck-task/delete-list?ids=${ids.join(',')}` })
  },

  // 导出复检任务 Excel
  exportRecheckTask: async (params) => {
    return await request.download({ url: `/mold/recheck-task/export-excel`, params })
  },

  // 修改复检任务状态
  modStatus: async (data: RecheckTaskModStatus) => {
    return await request.put({ url: `/mold/recheck-task/mod-status`, data })
  }
}
